home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / jDictionary 1.8 / jdictionary-1_8-win.exe / src-1_8 / info / jdictionary / DefaultFrameAssembler.java next >
Encoding:
Java Source  |  2002-08-10  |  6.8 KB  |  200 lines

  1. /*
  2.  * 01/09/2002 - 20:43:57
  3.  *
  4.  * DefaultFrameAssembler.java -
  5.  * Copyright (C) 2002 Csaba KertΘsz
  6.  * kcsaba@jdictionary.info
  7.  * www.jdictionary.info
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU Lesser General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU Lesser General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU Lesser General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  */
  23.  
  24. package info.jdictionary;
  25.  
  26. import javax.swing.JFrame;
  27. import javax.swing.JPanel;
  28. import javax.swing.JScrollPane;
  29. import javax.swing.JSplitPane;
  30. import javax.swing.SwingUtilities;
  31. import javax.swing.UIManager;
  32. import java.awt.Dimension;
  33. import java.awt.event.ComponentAdapter;
  34. import java.awt.event.ComponentEvent;
  35. import java.awt.event.WindowAdapter;
  36. import java.awt.event.WindowEvent;
  37. import java.awt.BorderLayout;
  38. import javax.swing.BoxLayout;
  39. import info.jdictionary.JDictionary;
  40. import info.jdictionary.modules.*;
  41. import info.jdictionary.ImageBank;
  42. import com.incors.plaf.kunststoff.KunststoffLookAndFeel;
  43. import info.jdictionary.gui.JDictionaryTheme;
  44.  
  45. public class DefaultFrameAssembler {
  46.  
  47.     private JFrame frame;
  48.     private final JDictionary jDictionary;
  49.  
  50.     private DefaultFooter footer;
  51.     private DefaultHeader header;
  52.     private DefaultLabelledPane labelledPane;
  53.     private DefaultOutput output;
  54.     private DefaultToolBar toolBar;
  55.     private DefaultTreeView treeView;
  56.     private DefaultMenuBar menuBar;
  57.     private int activateCounter = 0;
  58.  
  59.     JPanel upperPanel = new JPanel();
  60.     public JScrollPane outputScrollPane = new JScrollPane(); //fix it
  61.     JScrollPane pluginTreeViewScrollPane = new JScrollPane();
  62.     JSplitPane outputSplitPane = new JSplitPane();
  63.     JSplitPane pluginSplitPane = new JSplitPane();
  64.  
  65.     BorderLayout borderLayout1 = new BorderLayout();
  66.     BorderLayout borderLayout2 = new BorderLayout();
  67.     BorderLayout borderLayout3 = new BorderLayout();
  68.     BorderLayout borderLayout4 = new BorderLayout();
  69.     BoxLayout boxLayout1;
  70.  
  71.     public DefaultFrameAssembler(final JDictionary jDictionary, JFrame frame) {
  72.         this.jDictionary = jDictionary;
  73.         this.frame = frame;
  74.         boxLayout1 = new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS);
  75.         footer = new DefaultFooter(this);
  76.         header = new DefaultHeader(this);
  77.         labelledPane = new DefaultLabelledPane(this);
  78.         output = new DefaultOutput(this);
  79.         toolBar = new DefaultToolBar(this);
  80.         treeView = new DefaultTreeView(this);
  81.         menuBar = new DefaultMenuBar(this);
  82.  
  83.         frame.addComponentListener(new ComponentAdapter() {
  84.                                  public void componentResized(ComponentEvent e) {
  85.                                      frameResized(e);
  86.                                  }
  87.                              }
  88.                             );
  89.  
  90.         frame.addWindowListener(new WindowAdapter() {
  91.                               public void windowClosing(WindowEvent e) {
  92.                                   jDictionary.closeJDictionary();
  93.                               }
  94.                               public void windowActivated(WindowEvent e) {
  95.                                   if(activateCounter > 0)
  96.                                       jDictionary.getPluginManager().scanPlugins();
  97.                                   activateCounter++;
  98.                               }
  99.                           }
  100.                          );
  101.  
  102.         assemble();
  103.         frame.pack();
  104.         restoreSavedScreenState();
  105.         frame.show();
  106.     }
  107.  
  108.  
  109.     private void assemble() {
  110.         frame.setTitle(JDictionary.getString("JDictionaryName") + " " + JDictionary.getString("JDictionaryVersion"));
  111.         frame.setIconImage(IconBank.world.getImage());
  112.         frame.getContentPane().setLayout(boxLayout1);
  113.         frame.getContentPane().add(header);
  114.         frame.getContentPane().add(outputSplitPane, null);
  115.         frame.getContentPane().add(footer);
  116.  
  117.         outputSplitPane.setMaximumSize(new Dimension(2048, 2048));
  118.         outputSplitPane.setContinuousLayout(true);
  119.         outputSplitPane.setOneTouchExpandable(true);
  120.         outputSplitPane.add(outputScrollPane, JSplitPane.RIGHT);
  121.         outputSplitPane.add(pluginSplitPane, JSplitPane.LEFT);
  122.  
  123.         pluginSplitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
  124.         pluginSplitPane.setContinuousLayout(true);
  125.         pluginSplitPane.setOneTouchExpandable(true);
  126.         pluginSplitPane.add(upperPanel, JSplitPane.TOP);
  127.         pluginSplitPane.add(labelledPane, JSplitPane.BOTTOM);
  128.  
  129.         outputScrollPane.getViewport().add(output, null);
  130.  
  131.         pluginTreeViewScrollPane.getViewport().add(treeView, null);
  132.  
  133.         frame.setJMenuBar(menuBar);
  134.         upperPanel.setLayout(borderLayout1);
  135.         upperPanel.add(pluginTreeViewScrollPane, BorderLayout.CENTER);
  136.  
  137.         upperPanel.add(toolBar, BorderLayout.NORTH);
  138.  
  139.         setLookAndFeel(null);
  140.     }
  141.  
  142.  
  143.     public boolean setLookAndFeel(String lf) {
  144.         KunststoffLookAndFeel kunststoffLF = new KunststoffLookAndFeel();
  145.         kunststoffLF.setCurrentTheme(new JDictionaryTheme());
  146.         try {
  147.             UIManager.setLookAndFeel(kunststoffLF);
  148.         }
  149.         catch(javax.swing.UnsupportedLookAndFeelException e) {return false;}
  150.         SwingUtilities.updateComponentTreeUI(frame);
  151.  
  152.         return true;
  153.     }
  154.  
  155.  
  156.     public DefaultOutput getOutput() {
  157.         return output;
  158.     }
  159.  
  160.  
  161.     public DefaultTreeView getTreeView() {
  162.         return treeView;
  163.     }
  164.  
  165.  
  166.     void restoreSavedScreenState() {
  167.         frame.setSize(new Dimension(jDictionary.getPrefs().width, jDictionary.getPrefs().height));
  168.         outputSplitPane.setDividerLocation(jDictionary.getPrefs().dividerLocation);
  169.     }
  170.  
  171.  
  172.     public void setPluginSplitPaneDivider() {
  173.         pluginSplitPane.setDividerLocation(pluginSplitPane.getMaximumDividerLocation());
  174.     }
  175.  
  176.  
  177.     public void savePrefs() {
  178.         jDictionary.getPrefs().width = (int)frame.getSize().getWidth();
  179.         jDictionary.getPrefs().height = (int)frame.getSize().getHeight();
  180.         jDictionary.getPrefs().dividerLocation = outputSplitPane.getDividerLocation();
  181.     }
  182.  
  183.  
  184.     public JDictionary getJDictionary() {
  185.         return jDictionary;
  186.     }
  187.  
  188.  
  189.     void frameResized(ComponentEvent e) {
  190.         setPluginSplitPaneDivider();
  191.         Dimension dim = frame.getSize();
  192.         if (dim.getWidth() < 620 || dim.getHeight() < 385) {
  193.             if (dim.getWidth() < 620)
  194.                 dim.width = 620;
  195.             if (dim.getHeight() < 385)
  196.                 dim.height = 385;
  197.             frame.setSize(dim);
  198.         }
  199.     }
  200. }